import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'

// 重写push和replace方法
// 1.先保存原始方法
const originPush = VueRouter.prototype.push
const originReplace = VueRouter.prototype.replace

// 2.重写push方法
VueRouter.prototype.push = function (num, sucCallback, filCallback) {
  if (sucCallback === undefined && filCallback === undefined) {
    // 调用原始的方法
    originPush.call(this, num).catch(() => {})
  } else {
    originPush.call(this, num, sucCallback, filCallback)
  }
}

// 重写replace方法
VueRouter.prototype.replace = function (num, sucCallback, filCallback) {
  if (sucCallback === undefined && filCallback === undefined) {
    // 调用原始的方法
    originReplace.call(this, num).catch(() => {})
  } else {
    originReplace.call(this, num, sucCallback, filCallback)
  }
}

// 注册插件
Vue.use(VueRouter)

// 创建路由对象实例
const router = new VueRouter({
  mode: 'history', //改变路由模式 没有#
  routes,
  // 跳转页面后回到顶部位置
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { x: 0, y: 0 }
    }
  }
})

// 向外暴露实例对象
export default router
